﻿/*
* Copyright 2010 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License")
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ngilead.Test.Models;

namespace Ngilead.Test.DAO
{
    /// <summary>
    /// DAO factory
    /// </summary>
    public class DAOFactory
    {
        #region Private

        private static ICountryDAO _countryDAO;
        private static IEmployeeDAO _employeeDAO;
        private static IGenderDAO _genderDAO;
        private static IMessageDAO _messageDAO;
        private static IUserDAO _userDAO;

        #endregion

        /// <summary>
        /// UserDAO
        /// </summary>
        public static IUserDAO UserDAO
        {
            get
            {
                if (_userDAO == null)
                    _userDAO = new UserDAO();
                return _userDAO;
            }
        }

        /// <summary>
        /// EmployeeDAO
        /// </summary>
        public static IEmployeeDAO EmployeeDAO
        {
            get
            {
                if (_employeeDAO == null)
                    _employeeDAO = new EmployeeDAO();
                return _employeeDAO;
            }
        }

        /// <summary>
        /// GenderDAO
        /// </summary>
        public static IGenderDAO GenderDAO
        {
            get
            {
                if (_genderDAO == null)
                    _genderDAO = new GenderDAO();
                return _genderDAO;
            }
        }

        /// <summary>
        /// MessageDAO
        /// </summary>
        public static IMessageDAO MessageDAO
        {
            get
            {
                if (_messageDAO == null)
                    _messageDAO = new MessageDAO();
                return _messageDAO;
            }
        }

        /// <summary>
        /// CountryDAO
        /// </summary>
        public static ICountryDAO CountryDAO
        {
            get
            {
                if (_countryDAO == null)
                    _countryDAO = new CountryDAO();
                return _countryDAO;
            }
        }
    }
}
